/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package desarrollosoft.ghce.entidades;

import java.io.Serializable;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

/**
 *
 * @author ariel
 */
@Entity
@Table(name = "UNIDADES_MEDIDA", uniqueConstraints = {
    @UniqueConstraint(columnNames = {"nombreCompleto"}), // coma: separador entre constraints
    @UniqueConstraint(columnNames = {"nombreAbreviado"})
})
public class UnidadMedida implements Serializable {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name = "nombreCompleto", nullable = false)
    private String nombreCompleto;
    
    @Column(name = "nombreAbreviado", nullable = false)
    private String nombreAbreviado;
    
    public UnidadMedida() {}

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNombreCompleto() {
        return nombreCompleto;
    }

    public void setNombreCompleto(String nombreCompleto) {
        if (nombreCompleto != null && nombreCompleto.length() == 0) {
            this.nombreCompleto = null;
        } else {
            this.nombreCompleto = nombreCompleto;
        }
    }

    public String getNombreAbreviado() {
        return nombreAbreviado;
    }

    public void setNombreAbreviado(String nombreAbreviado) {
        if (nombreAbreviado != null && nombreAbreviado.length() == 0) {
            this.nombreAbreviado = null;
        } else {
            this.nombreAbreviado = nombreAbreviado;
        }
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 59 * hash + Objects.hashCode(this.id);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final UnidadMedida other = (UnidadMedida) obj;
        if (!Objects.equals(this.id, other.id)) {
            return false;
        }
        return true;
    }
    
    @Override
    public String toString() {
        return nombreAbreviado + " (" + nombreCompleto + ")";
    }

    public UnidadMedida clonar() {
        UnidadMedida u = new UnidadMedida();
        
        u.setId(id);
        u.setNombreAbreviado(nombreAbreviado);
        u.setNombreCompleto(nombreCompleto);
        
        return u;
    }
}
